[アップデート] セキュリティグループを別の VPC で使えるようになりました

[アップデート] セキュリティグループを別の VPC で使えるようになりました

Clock Icon2024.10.31

いわさです。

今朝の AWS API のアップデートみましたか。これ。

https://awsapichanges.com/archive/changes/0b82f0-ec2.html

セキュリティグループを VPC に関連付け出来るようになったらしいのです。
どういうことだろう。VPC 内で共通で適用されるセキュリティグループが登場したのか?と思ったのですが、どうやら別の VPC 内でセキュリティグループを使えるようにするアップデートのようです。

What's New アナウンスも出ていました!

https://aws.amazon.com/about-aws/whats-new/2024/10/amazon-virtual-private-cloud-security-group-sharing/

これは驚きですね。
これまではセキュリティグループは VPC に関連付けして作成し、その VPC 内の EC2 や ENI にアタッチする形でした。
異なる VPC 間のセキュリティグループで ID の参照は出来ましたが、インスタンスやネットワークインターフェースへのアタッチは出来ませんでした。
そのため、同じセキュリティグループを別の VPC で使いたい場合は、例えば次のような方法でコピーする必要がありました。

https://repost.aws/ja/knowledge-center/vpc-copy-security-group-rules

今回のアップデートで複数の VPC でセキュリティグループを共有出来るようになりました。
一部マネジメントコンソールからでも動作するので確認した様子を紹介します。

セキュリティグループの作成

まずは VPC を普通に作成します。従来どおりどの VPC に作成するのかも指定しますね。これが無くなるわけではないみたいだ。
作成する時には特にそれっぽい設定は見当たりません。

377D8AC9-9FC2-4618-9CA3-69254CB3EE99.png

作成された VPC を確認してみると次のような「VPC associations」というタブが確認出来ました。これっぽいですね。
セキュリティグループを別 VPC に関連付けしていく形か。(隣の Sharing タブも気になるが...)

「Associate VPC」ボタンで関連付けが出来そうです。

AD7A6F2B-6580-4B5D-B856-E7CD38A44773.png

まずは自分の VPC を設定してみます。

A81835D5-5066-4DD7-B141-025E4CD21E93_4_5005_c.jpeg

これはエラーになりました。

24F929C3-9099-425A-B11E-FD5088EBCFC4_4_5005_c.jpeg

続いて別の VPC を作成してそれを指定してみました。そうしたところ関連付けが出来ました。おぉ...

7B5D6404-1A55-4AF0-846A-4ECBA1398609.png

別 VPC で使ってみる

よし、と思ってその別 VPC で EC2 インスタンスを作成してみようとしたのですが、私が試した時点の東京リージョンでは、まだ EC2 も ENI もマネジメントコンソール上で既存セキュリティグループの選択が出来ませんでした。

BA3EB133-2133-490E-8772-5FA0B5A2BDB2.png

そこで AWS CLI を使って試してみます。マネジメントコンソールの反映が少し遅れるパターン、よくありますからね。

以下で指定しているセキュリティグループ ID sg-01d38e615d6fbf6fcは先程作成したセキュリティグループです。
これはサブネット subnet-0eec1aca915cbeae2が所属する VPC に存在しているセキュリティグループではありません。

% cat hoge.json
{
    "ImageId": "ami-03f584e50b2d32776",
    "InstanceType": "t2.micro",
    "KeyName": "hoge",
    "SecurityGroupIds": [
        "sg-01d38e615d6fbf6fc"
    ],
    "SubnetId": "subnet-0eec1aca915cbeae2"
}
% aws ec2 run-instances --cli-input-json file://hoge.json
{
    "Groups": [],
    "Instances": [

:

    ],
    "OwnerId": "123456789012",
    "ReservationId": "r-0eaa1ed32268cade0"
}

おお、普通に成功しました。
インスタンスを確認してみます。

96AB3BCD-E280-4F36-9CA2-5DBB95470DDD_4_5005_c.jpeg

すごい、違う VPC 同士で同じセキュリティグループを使っている。

ちなみにセキュリティグループを別 VPC に関連付けしていない状態でインスタンス作成しようとすると次のようになります。普通はこうですよね。

% aws ec2 run-instances --cli-input-json file://hoge.json     

An error occurred (InvalidParameter) when calling the RunInstances operation: Security group sg-0007495107f046da0 and subnet subnet-0eec1aca915cbeae2 belong to different networks.

別 VPC への関連付けの解除

VPC 関連付け解除を試してみます。
次のボタンから操作出来ます。

14B59660-E155-4412-93EB-B81F14944457.png

解除しようとすると、もうこの VPC で使えなくなるよーと言われますね。

11E3BB76-B2DE-458B-A17B-6901CF19A3CD_4_5005_c.jpeg

ただ、今はまだ別 VPC で使用しているインスタンスが存在するため、解除操作に失敗しました。
良いですね、ちゃんと見てくれている。

FAD3B650-C52E-4180-B78A-785B68ADBD4F_4_5005_c.jpeg

インスタンスを削除した後であれば、期待どおり解除出来ました。

SecurityGroup___VPC_Console

さいごに

本日はセキュリティグループを別の VPC で使えるようになっていたので試してみました。
これやりたかった人いると思うので試してみてください。従来の AWS のセキュリティグループの設計が変わっちゃうのかな。

なお、AWS 公式ドキュメントはまだ更新されていないのですが、AWS API ドキュメントからの情報によると次のような制限事項があるようです。

  • セキュリティグループを関連付ける別 VPC は同じリージョン内にある必要がある
  • デフォルトのセキュリティグループでは使えない
  • デフォルトの VPC では使えない

試しにデフォルトセキュリティグループで試そうとしたところ次のような画面表示となっていました。なるほど。

AB0C11BC-FE9D-47B3-AA1C-E4CF16459E04_4_5005_c.jpeg

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.